package lifei.lifei.spring.controller;

import lifei.lifei.spring.service.ISysLogService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

//表现层测试耦合
//@Configuration标记当前为配置类

public class SysLogController{
    //表现层依赖业务层接口，调用其方法完成具体的业务，
    // 所以需要创建业务层接口的对象
//    private ISysLogService iSysLogService=
//            new ISysLogServiceImpl();
    //使用工厂模式解决程序中的耦合问题
//    private ISysLogService iSysLogService=
//          (ISysLogService)BeanFactory
//                   .getBean("ISysLogService");
    @Test
    public void testSaveSysLog(){
        //启动spring容器
        /*启动容器加载过程说明：
        1.读取配置文件
        2.解析XML文件
        3.把解析XML的内容存储在内置的map中
        4.从map中获取内容，遍历map中的所有数据，并通过反射实例化对象
        * */
        //使用XML方式启动容器
        ApplicationContext context =
                new ClassPathXmlApplicationContext(
                        "applicationContext.xml");
        //使用全注解启动容器
//        ApplicationContext context =
//        new AnnotationConfigApplicationContext(
//                JavaConfig.class);
        //获取Cat懒加载对象
//        Cat cat = context.getBean("cat", Cat.class);
//        cat.sayHello();
//        ISysLogService iSysLogService =
//                (ISysLogService) context.getBean("iSysLogService");
        ISysLogService iSysLogService =
                context.getBean(ISysLogService.class);
        System.out.println(iSysLogService);
        System.out.println("调用业务层接口方法添加日志信息。。。");
        //表现层依赖业务层接口完成业务
        iSysLogService.saveSysLog();
    }
}
